/*
 * Copyright (c) 2017-2025 Tencent. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.tencentcloudapi.apm.v20210622.models;

import com.tencentcloudapi.common.AbstractModel;
import com.tencentcloudapi.common.SSEResponseModel;
import com.google.gson.annotations.SerializedName;
import com.google.gson.annotations.Expose;
import java.util.HashMap;

public class DescribeApmServiceMetricResponse extends AbstractModel {

    /**
    * List of application metrics.
    */
    @SerializedName("ServiceMetricList")
    @Expose
    private ApmServiceMetric [] ServiceMetricList;

    /**
    * Number of applications meeting the filtering conditions.
    */
    @SerializedName("TotalCount")
    @Expose
    private Long TotalCount;

    /**
    * Warning of the abnormal number of applications.
    */
    @SerializedName("WarningErrorCount")
    @Expose
    private Long WarningErrorCount;

    /**
    * Total number of applications.
    */
    @SerializedName("ApplicationCount")
    @Expose
    private Long ApplicationCount;

    /**
    * Page number.
    */
    @SerializedName("Page")
    @Expose
    private Long Page;

    /**
    * Page size.
    */
    @SerializedName("PageSize")
    @Expose
    private Long PageSize;

    /**
    * Indicates the number of abnormal applications.
    */
    @SerializedName("ErrorCount")
    @Expose
    private Long ErrorCount;

    /**
    * Warning of the number of applications.
    */
    @SerializedName("WarningCount")
    @Expose
    private Long WarningCount;

    /**
    * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
    */
    @SerializedName("RequestId")
    @Expose
    private String RequestId;

    /**
     * Get List of application metrics. 
     * @return ServiceMetricList List of application metrics.
     */
    public ApmServiceMetric [] getServiceMetricList() {
        return this.ServiceMetricList;
    }

    /**
     * Set List of application metrics.
     * @param ServiceMetricList List of application metrics.
     */
    public void setServiceMetricList(ApmServiceMetric [] ServiceMetricList) {
        this.ServiceMetricList = ServiceMetricList;
    }

    /**
     * Get Number of applications meeting the filtering conditions. 
     * @return TotalCount Number of applications meeting the filtering conditions.
     */
    public Long getTotalCount() {
        return this.TotalCount;
    }

    /**
     * Set Number of applications meeting the filtering conditions.
     * @param TotalCount Number of applications meeting the filtering conditions.
     */
    public void setTotalCount(Long TotalCount) {
        this.TotalCount = TotalCount;
    }

    /**
     * Get Warning of the abnormal number of applications. 
     * @return WarningErrorCount Warning of the abnormal number of applications.
     */
    public Long getWarningErrorCount() {
        return this.WarningErrorCount;
    }

    /**
     * Set Warning of the abnormal number of applications.
     * @param WarningErrorCount Warning of the abnormal number of applications.
     */
    public void setWarningErrorCount(Long WarningErrorCount) {
        this.WarningErrorCount = WarningErrorCount;
    }

    /**
     * Get Total number of applications. 
     * @return ApplicationCount Total number of applications.
     */
    public Long getApplicationCount() {
        return this.ApplicationCount;
    }

    /**
     * Set Total number of applications.
     * @param ApplicationCount Total number of applications.
     */
    public void setApplicationCount(Long ApplicationCount) {
        this.ApplicationCount = ApplicationCount;
    }

    /**
     * Get Page number. 
     * @return Page Page number.
     */
    public Long getPage() {
        return this.Page;
    }

    /**
     * Set Page number.
     * @param Page Page number.
     */
    public void setPage(Long Page) {
        this.Page = Page;
    }

    /**
     * Get Page size. 
     * @return PageSize Page size.
     */
    public Long getPageSize() {
        return this.PageSize;
    }

    /**
     * Set Page size.
     * @param PageSize Page size.
     */
    public void setPageSize(Long PageSize) {
        this.PageSize = PageSize;
    }

    /**
     * Get Indicates the number of abnormal applications. 
     * @return ErrorCount Indicates the number of abnormal applications.
     */
    public Long getErrorCount() {
        return this.ErrorCount;
    }

    /**
     * Set Indicates the number of abnormal applications.
     * @param ErrorCount Indicates the number of abnormal applications.
     */
    public void setErrorCount(Long ErrorCount) {
        this.ErrorCount = ErrorCount;
    }

    /**
     * Get Warning of the number of applications. 
     * @return WarningCount Warning of the number of applications.
     */
    public Long getWarningCount() {
        return this.WarningCount;
    }

    /**
     * Set Warning of the number of applications.
     * @param WarningCount Warning of the number of applications.
     */
    public void setWarningCount(Long WarningCount) {
        this.WarningCount = WarningCount;
    }

    /**
     * Get The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem. 
     * @return RequestId The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
     */
    public String getRequestId() {
        return this.RequestId;
    }

    /**
     * Set The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
     * @param RequestId The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
     */
    public void setRequestId(String RequestId) {
        this.RequestId = RequestId;
    }

    public DescribeApmServiceMetricResponse() {
    }

    /**
     * NOTE: Any ambiguous key set via .set("AnyKey", "value") will be a shallow copy,
     *       and any explicit key, i.e Foo, set via .setFoo("value") will be a deep copy.
     */
    public DescribeApmServiceMetricResponse(DescribeApmServiceMetricResponse source) {
        if (source.ServiceMetricList != null) {
            this.ServiceMetricList = new ApmServiceMetric[source.ServiceMetricList.length];
            for (int i = 0; i < source.ServiceMetricList.length; i++) {
                this.ServiceMetricList[i] = new ApmServiceMetric(source.ServiceMetricList[i]);
            }
        }
        if (source.TotalCount != null) {
            this.TotalCount = new Long(source.TotalCount);
        }
        if (source.WarningErrorCount != null) {
            this.WarningErrorCount = new Long(source.WarningErrorCount);
        }
        if (source.ApplicationCount != null) {
            this.ApplicationCount = new Long(source.ApplicationCount);
        }
        if (source.Page != null) {
            this.Page = new Long(source.Page);
        }
        if (source.PageSize != null) {
            this.PageSize = new Long(source.PageSize);
        }
        if (source.ErrorCount != null) {
            this.ErrorCount = new Long(source.ErrorCount);
        }
        if (source.WarningCount != null) {
            this.WarningCount = new Long(source.WarningCount);
        }
        if (source.RequestId != null) {
            this.RequestId = new String(source.RequestId);
        }
    }


    /**
     * Internal implementation, normal users should not use it.
     */
    public void toMap(HashMap<String, String> map, String prefix) {
        this.setParamArrayObj(map, prefix + "ServiceMetricList.", this.ServiceMetricList);
        this.setParamSimple(map, prefix + "TotalCount", this.TotalCount);
        this.setParamSimple(map, prefix + "WarningErrorCount", this.WarningErrorCount);
        this.setParamSimple(map, prefix + "ApplicationCount", this.ApplicationCount);
        this.setParamSimple(map, prefix + "Page", this.Page);
        this.setParamSimple(map, prefix + "PageSize", this.PageSize);
        this.setParamSimple(map, prefix + "ErrorCount", this.ErrorCount);
        this.setParamSimple(map, prefix + "WarningCount", this.WarningCount);
        this.setParamSimple(map, prefix + "RequestId", this.RequestId);

    }
}

